# 假设的LangChain和OpenAI GPT模型接口
# from langchain.llms import OpenAI
import os
from langchain_community.llms import Tongyi


def remove_blank_lines(text):
    lines = text.split('\n')
    non_blank_lines = [line for line in lines if line.strip() != '']
    return '\n'.join(non_blank_lines)


# from langchain_community.llms import Tongyi
os.environ["DASHSCOPE_API_KEY"] = "sk-efdab61f27ce4032b58c86048de19ee5"
# 创建模型实例
# model = Tongyi(model='qwen-max-longcontext')

model = Tongyi(model='qwen-max')

# 页面文本
page_text = """
htmlheaderbox结束header结束main基础公司运营道路、桥梁涵洞、隧道定期检测项目招标公告所属单位中国雄安集团基础建设有限公司所属地区河北加入日期2023年10月23日截止日期2023年11月02日招标正文打印全文公告正文公告正文 start基础公司运营道路、桥梁涵洞、隧道定期检测项目招标公告1.招标条件本招标项目 基础公司运营道路、桥梁涵洞、隧道定期检测项目已由 / 以 / 批准建设，项目业主为中国雄安集团基础建设有限公司 ，建设资金来自新区财政资金 ，出资比例为 100% ，招标人为 中国雄安集团基础建设有限公司 。项目已具备招标条件，现对该项目进行公开招标。2.项目概况与招标范围2.1项目概况：项目位于河北雄安新区，检测范围包括中国雄安集团基础建设有限公司管理的容东片区、容西片区、雄东片区以及外围路网范围内满足检测条件的道路、隧道和桥梁涵洞。详见采购需求。??2.2招标范围：根据相关法律法规，对招标人要求的道路、桥梁涵洞、隧道进行检测，并对检测结果进行分析评定，提出养护方案和建议，出具检测报告。具体工作内容详见采购需求。2.3 服务期限：合同签订后，自接到招标人通知之日起60日内完成全部检测及相关工作并出具检测报告。 2.4 服务地点：河北雄安新区。 2.5 质量标准：合格。 2.6 本项目的标段划分：本项目不划分标段。 2.7中标人数量：1家。3.投标人资格要求3.1本次招标对投标人的资格要求如下:??3.1.1资质要求：基本资格要求投标人应具有独立法人资格，且不得存在下列情形之一：（1）为招标人不具有独立法人资格的附属机构（单位）；（2）与招标人存在利害关系且可能影响招标公正性；（3）投标人单位负责人与本招标项目的其他投标人的单位负责人为同一人；（4）与本招标项目的其他投标人存在控股、管理关系；（5）为本招标项目的代建人；（6）为本招标项目的招标代理机构；（7）与本招标项目的代建人或招标代理机构同为一个法定代表人；（8）与本招标项目的代建人或招标代理机构存在控股或参股关系；（9）被依法暂停或者取消在雄安新区的投标资格；（10）被责令停业，暂扣或者吊销执照或许可证，或吊销资质证书；（11）进入清算程序，或被宣告破产，或其他丧失履约能力的情形；（12）在近三年内（从招标公告发布之日起倒算）有骗取中标或严重违约或承担项目存在重大质量问题的（以相关行业主管部门的行政处罚决定或司法机关出具的有关法律文书为准）；（13）被市场监督管理部门在国家企业信用信息公示系统中列入严重违法失信企业名单；（14）在“信用中国”网站（www.creditchina.gov.cn）中列入失信被执行人名单；（15）在近三年内（从招标公告发布之日起倒算）投标人或其法定代表人、拟委任的项目负责人有行贿犯罪行为的。（16）根据《河北雄安新区工程建设项目招标投标领域严重失信主体名单管理暂行办法》（雄安公服发[2022]84号）规定，被雄安新区相关部门列入河北雄安新区工程建设项目招标投标领域“严重失信主体名单”且在限制投标期内的投标人。（17）以弄虚作假方式骗取中标被给予行政处罚且在处罚期内的。（18）法律法规规定的其他情形。3.1.2 投标人应具有的专项资格、业绩、信誉和其他要求：（1）专项资格要求：具有市场监督部门颁发的检验检测机构资质认定证书（CMA证书），同时投标人还应满足下列①、②、③、④、⑤条件之一：①具有省级以上建设行政主管部门颁发的建设工程质量检测机构资质证书（检测业务范围至少包括：主体结构工程现场检测、钢结构工程检测）；②具有省级以上建设行政主管部门颁发的建设工程质量检测机构综合资质；③同时具有省级以上建设行政主管部门颁发的建设工程质量检测机构道路工程检测专项资质和桥梁与地下工程检测专项资质（须包括以下可选检测项目：桥梁及附属物、桥梁支座、桥梁伸缩装置、涵洞主体结构）；④具有省级以上交通运输主管部门颁发的公路工程综合甲级试验检测资质证书；⑤同时具有省级以上交通运输主管部门颁发的公路工程综合乙级试验检测资质证书和桥梁隧道工程专项试验检测资质证书。（2）业绩最低要求：近5年内（自招标公告发布之日起倒算，以合同签订日期为准）具有一项道路或桥梁的质量检测项目业绩。（3）项目负责人要求：1名，具有工程类中级及以上专业技术职称。（4）信誉要求：投标人不得存在下列情况：①因违反工程质量、安全生产管理规定等原因被给予行政处罚且在处罚期内的；②近1年内（从投标文件递交截止之日起倒算）因串通投标、转包、以他人名义投标或者违法分包受到行政处罚的；③以弄虚作假方式骗取中标被给予行政处罚且在处罚期限内的；④拖欠工人工资被有关部门责令改正而未改正或被列入拖欠工资“黑名单”且在公示期内的；⑤在雄安新区范围内，因涉嫌围标、串通投标被立案调查，尚未调查结束的；上述①～④条以“信用中国”网站（www.creditchina.gov.cn）公布的处罚及处罚期限为准，未列明处罚期限的视同不在处罚期内。（5）其他要求：跨地区开展非见证取样检测的，应在雄安新区内设有固定的办公场所，检测人员、自有设备、工作场所、技术管理、数据上传等应当符合新区开展相应检测活动的要求；跨省域开展检测业务的，应按照河北省住房和城乡建设厅相关要求进行备案。 。3.2本次招标 接受 联合体投标。联合体投标的，应满足下列要求：a.组成联合体的成员总数（含牵头人）不超过2家；b.联合体各方均应满足本招标公告第3.1.1款及3.1.2（4）项的要求；c.联合体各方至少应具有省级以上建设行政主管部门颁发的建设工程质量检测机构资质证书、省级以上建设行政主管部门颁发的建设工程质量检测机构综合资质、省级以上建设行政主管部门颁发的建设工程质量检测机构道路工程检测专项资质、省级以上建设行政主管部门颁发的桥梁与地下工程检测专项资质、省级以上交通运输主管部门颁发的公路工程综合甲级试验检测资质证书、省级以上交通运输主管部门颁发的公路工程综合乙级试验检测资质证书、省级以上交通运输主管部门颁发的桥梁隧道工程专项试验检测资质证书中的一种，且该联合体合计检测资质和业务范围需至少满足招标公告第3.1.2（1）项①、②、③、④、⑤中的任一条件；d.联合体各方均须具有市场监督部门颁发的检验检测机构资质认定证书（CMA证书）；e.联合体各方中若有跨省域开展检测业务的成员，则该成员应按照河北省住房和城乡建设厅相关要求进行备案；f.联合体各方不得再以自己名义单独或参加其他联合体在本项目中投标，否则各相关投标均无效。。4.招标文件的获取4.1凡有意参加投标者，请于 2023-10-24 08:00 至 2023-11-02 08:59 （北京时间，下同）， 注册：有意向参加本项目的单位，须在中国雄安集团电子招标采购交易平台（http://www.xabidding.cn）进行用户注册，经注册审核通过后方可报名。下载方式：投标人登录投标人端，找到需要参与的项目，点击参与项目，参与项目后可在“我的项目”中找到本项目，即可 下载招标文件。4.2招标文件售价 0 元，售后不退。4.3其他说明：如需帮助，请登陆中国雄安集团电子招标采购交易平台网站首页“帮助中心”-“业务操作指南”查看《雄安集团电子招标采购交易平台操作手册_投标人》。 电子招投标交易平台相关说明及注意事项:警告：中国雄安集团电子招标采购交易平台已接入智慧纪检监督系统，如投标人中存在使用同一台电脑制作或上传投标文件的，将被系统自动识别为存在围标、串标嫌疑。相关数据直接上链并移交相关部门。 一、递交投标文件 1、投标人应在投标文件递交截止时间2小时前上传，充分考虑到网络及系统平台可能存在的非正常情况。（对于超过50M的文件，请您预留更多时间）。 2、投标人提早在采购项目文件获取截止时间、递交文件截止时间前进行相应业务操作。避免临近截止时间因网络环境、个人电脑环境等原因导致您未能及时参与、报价、递交文件，导致投标失败。 3、在生成投标文件后，请对照招标/招标文件要求，认真核对签名信息和数量后再上传投标文件；上传成功后，请务必下载、检查，确保文件内容和签名无误。 二、开标 （一）投标人参加方式：投标人/投标人须登录中国雄安集团电子招标采购交易平台-投标人端，通过【我的项目】-【项目工作台】进入项目后点击【开标】进入开标会（或点击【开标大厅】进入）。 （二）开标前必须进行驱动检测 1、请投标人务必在开标前进行驱动检测（打开数字签名服务-驱动管理，点击“一键检测”），如未进行驱动检测导致开标时无法解密所造成的一切后果由投标人自行负责。 2、建议使用google、Edge、火狐浏览器登录，确保CA数字证书能正常使用，如有问题可拨打技术支持电话010-21362559。 3、请投标人提前准备好加密CA数字证书和电脑，确保网络顺畅，推荐使用公司办公环境的有线网络。 三、评标 在评标过程中投标人应随时关注平台信息，在规定时间内答复评标委员会发出的澄清、质疑。未在规定时间内答复的，评标委员会将按照评标办法作出最不利于该投标人的量化。 四、服务电话 电子交易平台：010-21362559 北京CA数字证书：15028921277（微信同号） 注册审核：0312-5673386 五、潜在投标人及其他利害关系人有在法定时限内行使异议或者投诉的权利。 1、异议应当以书面形式提出（仅涉及开标的除外），异议书格式及内容应符合《河北雄安新区工程建设项目招标投标活动异议和投诉处理暂行办法》及招标文件的要求。 异议受理的联系方式： 联系人：周工 电 话：0312-5609973转8006 电子邮件：1805571172@qq.com 地 址：北京市朝阳区安苑路20号世纪兴源大厦8层 提交地点：中国雄安集团电子招标采购交易平台“异议与回复”环节提交 2、异议应当以异议书形式提交，提出异议应当符合下列规定： ①异议书应当加盖单位公章，并注明有效的联系方式。异议处理对接人非单位法定代表人的，还应由该单位为对接人出具加盖单位公章且经法定代表人签字的授权委托书； ②异议书应当包含异议人的名称、地址、电话、邮箱、日期等基本信息及异议事项的基本事实、有效线索、证明材料、相关请求及主张； ③开标现场未提出相关异议或已经投标人确认的事项，开标后不得就同一事项提出异议； ④已经做出明确答复，无新的事实证据的，不得就同一事项提出异议； ⑤异议书有关材料是外文的，异议人应当同时提供简体中文译本。外文与简体中文译本不一致的，以简体中文译本为准。 ⑥不满足本条要求的不予受理。 3、异议人撤回异议的，须以书面形式提出。异议人撤回异议的，视为该异议无效，异议程序自然终止，异议人不得以同一理由再次提出异议。 4、被质疑人须配合招标人对异议事项进行核查。 被质疑人无正当理由拒绝配合调查的，招标人有权取消被质疑人中标资格，并按照评标委员会提出的候选人排序依次确定其他候选人为中标人，也可以依法重新招标。5. 投标文件的递交5.1投标文件递交的截止时间（投标截止时间，下同）为 2023-11-02 09:00 ，递交地点/交易平台为 通过中国雄安集团电子招标采购交易平台递交电子版投标文件，无需提交纸质版文件。特别说明：投标人应在递交截止时间前先将编制完成的投标文件进行加密，再登录“交易平台”，将加密的投标文件上传，上传成功后，系统自动反馈上传结果和时间，递交时间即为系统反馈结果时间。逾期未完成上传的，系统将拒绝接收该投标文件并自动对其关闭；未按规定加密的投标文件系统将自动拒绝并提示。文件加密与上传须办理北京CA数字证书（登录中国雄安集团电子招标采购交易平台http://www.xabidding.cn，点击右侧“CA服务”进入证书申请页面在线办理北京CA数字证书），请各投标人尽快办理。 文件开启：（1）投标人须登录中国雄安集团电子招标采购交易平台在线完成开标工作。开标时，投标人进入项目工作台，然后点击【开标】切换流程节点，再点击【进入开标系统】可进入远程开标系统。开标时，投标人需进入开标系统后在线签到，签到须填写“签到人姓名”、“手机号码”。 （2）在开标准备环节，投标人无需操作，等待开标人完成投标文件导入即可。 （3）开标人下达解密指令后，投标人须在电脑插入CA数字证书后点击【解密】，输入数字证书密码完成解密，投标人须在60分钟内完成解密并进行确认。 因投标人未按操作手册要求配置软硬件、忘记CA登陆密码、CA数字证书发生故障或用错、未在要求时限内完成解密等自身原因，导致投标文件在规定时间内未能解密、解密失败或解密超时，视为投标人放弃投标，由投标人自身承担一切后果。 因招标人原因或系统发生故障等，导致无法按时完成投标文件解密或开标工作无法进行的，可根据实际情况相应延迟解密时间或调整开标时间。 （4）解密时间结束后，等待开标人点击唱标后，投标人即可查看唱标内容，并进行确认。开标人生成开标一览表后，投标人可进行查看。开标过程中，可在线提出异议，开标人回复后可进行查看。具体操作流程详见“雄安集团电子招标采购交易平台操作手册”。 。5.2 逾期送达的投标文件，电子招标投标交易平台将予以拒收。6. 发布公告的媒介本次招标公告同时在 本次招标公告、中标候选人公示及中标结果公示均同时在“中国招标投标公共服务平台（http://www.cebpubservice.com/）”、“河北省招标投标公共服务平台（http://www.hebeieb.com/）”和“中国雄安集团电子招标采购交易平台（http://www.xabidding.cn）” 上发布。7.联系方式招标人：中国雄安集团基础建设有限公司招标代理机构：华杰工程咨询有限公司地址：中国（河北）自由贸易试验区雄安片区容城县雄安市民服务中心雄安集团办公楼336-1地址：北京市朝阳区安苑路20号世纪兴源大厦8层邮编：/邮编：/联系人：付经理联系人：周工、王工、刘工电话：0312-5670805电话：0312-5609973转8006，18931243001传真：/传真：/电子邮件：/电子邮件：1805571172@qq.com网址：/网址：/开户银行：/开户银行：/账号：/账号：/公告正文 end二维码返回顶部
"""
#
# # 定义提示链中的提示
# prompts = [
#     {"field": "projectName", "prompt": "仅输出项目名称"},
#     {"field": "company", "prompt": "仅输出单位名称"},
#     {"field": "budget", "prompt": "换算成万元单位必须为万元，存在多个金额累加后保留小数点后2位输出。"},
# ]
#
# # 应用提示链并收集输出
# output = {}
# for item in prompts:
#     # 向模型发送提示和页面文本，获取回答
#     response = model(f"{item['prompt']}\n{page_text}")
#     # 假设response.text返回模型的文本回答
#     output[item["field"]] = response.strip()
#
# # 将输出转换为JSON格式
# import json
#
# json_output = json.dumps(output, ensure_ascii=False, indent=4)
# print(json_output)
# 构建综合性提示
composite_prompt = """
根据以下信息：
{page_text}
回答以下问题：
问题1: 项目名称是什么？(仅输出项目名称)。
问题2: 该项目的所属单位是什么？(仅输出所属单位)。
问题3: 所属行业(从项目名称进行判断对行业进行归类，匹配相近的行业分类如市政、公路、水运、水利、铁路、城轨、航空、建工、环境、食品，如果都匹配不上归类为其他)。
问题4: 所属省份是？（补全省份或直辖市名称，示例：湖北=湖北省、北京=北京市）。
问题5: 所属城市是？（补全城市名称，示例：武汉=武汉市）。
问题6: 公告日期（输出格式强制为年月日）。
问题7: 截止日期（输出格式强制为年月日）。
问题8: 预算金额(换算成万元单位必须为万元，存在多个金额累加后保留小数点后2位输出）。
问题9: 供应商资质要求有哪些?。
问题10: 投标人特定资格条件有哪些?。
问题11: 招标人/采购人联系电话是多少，只要电话就好了
问题12: 代理服务费是多少？（单位必须是万元）
问题13: 招标代理机构是什么？
""".format(page_text=page_text)

# 调用模型
response = model(remove_blank_lines(composite_prompt))
# 假设response.text返回模型的文本回答
# 解析模型的回答
# 注意：这里的解析逻辑需要根据实际的模型回答格式进行调整
answers = response.strip().split("\n")
print(answers)
output = {
    "projectName": answers[0].split(": ")[1] if len(answers) > 0 else "",
    "company": answers[1].split(": ")[1] if len(answers) > 1 else "",
    "industry": answers[2].split(": ")[1] if len(answers) > 2 else "",
    "area": answers[3].split(": ")[1] if len(answers) > 3 else "",
    "city": answers[4].split(": ")[1] if len(answers) > 4 else "",
    "declarationDate": answers[5].split(": ")[1] if len(answers) > 5 else "",
    "expirationDate": answers[6].split(": ")[1] if len(answers) > 6 else "",
    "budget": answers[7].split(": ")[1] if len(answers) > 7 else "",
    "supplierQualification": answers[8].split(": ")[1] if len(answers) > 8 else "",
    "bidderQualification": answers[9].split(": ")[1] if len(answers) > 9 else "",
    "contactInfo": answers[10].split(": ")[1] if len(answers) > 10 else "",
    "agentServiceFee": answers[11].split(": ")[1] if len(answers) > 11 else "",
    "bidingAgency": answers[12].split(": ")[1] if len(answers) > 12 else ""
}

# 将输出转换为JSON格式
import json

json_output = json.dumps(output, ensure_ascii=False, indent=4)
print(json_output)
